package com.stsdai.search.service.test;

import java.util.ArrayList;
import java.util.List;

import org.apache.solr.client.solrj.impl.CloudSolrServer;
import org.apache.solr.common.SolrInputDocument;
import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;

import com.github.pagehelper.PageHelper;
import com.stsdai.manager.mapper.ItemMapper;
import com.stsdai.manager.pojo.Item;

public class ItemData {

	private ItemMapper itemMapper;

	private CloudSolrServer cloudSolrServer;

	@Before
	public void init() {
		// 获取spring容器
		ApplicationContext context = new ClassPathXmlApplicationContext("spring/applicationContext-*.xml");

		// 从spring容器中获取ItemMapper
		this.itemMapper = context.getBean(ItemMapper.class);

		// 从spring容器中获取CloudSolrServer
		this.cloudSolrServer = context.getBean(CloudSolrServer.class);
	}

	@Test
	public void testItemData() throws Exception {
		
		
		// 声明页码数
		int page = 1, pageSize = 0;

		do {
			// 从MySQL中，查询商品数据，只用ItemMapper查询。
			// 使用分页查询，每页查询500条数据
			PageHelper.startPage(page, 500);
			List<Item> list = this.itemMapper.select(null);

			// 声明存放SolrInputDocument的容器
			List<SolrInputDocument> docs = new ArrayList<>();

			// 遍历商品查询结果
			// 把商品数据封装到SolrInputDocument中
			for (Item item : list) {
				// 声明SolrInputDocument
				SolrInputDocument doc = new SolrInputDocument();

				// 商品id
				doc.addField("id", item.getId());
				// 商品item_title
				doc.addField("item_title", item.getTitle());
				// 商品item_price
				doc.addField("item_price", item.getPrice());
				// 商品item_image
				doc.addField("item_image", item.getImage());
				// 商品item_cid
				doc.addField("item_cid", item.getCid());
				// 商品item_status
				doc.addField("item_status", item.getStatus());

				// 把封装好的doc放到容器中
				docs.add(doc);

			}

			// 使用CloudSolrServer把docs批量保存到solr索引库中
			this.cloudSolrServer.add(docs);
			// 提交
			this.cloudSolrServer.commit();

			// 每执行一次，页码加一，获取查询的数据条数
			page++;
			pageSize = list.size();

		} while (pageSize == 500);
	}

}
